package com.example.wangzh.developkit.utils.input_filter;

import android.text.InputFilter;
import android.text.Spanned;

/**
 * Created by USER on 2017/4/6.
 */

public class DecimalFilter implements InputFilter{
	private int decimalDigits = 2;

	public DecimalFilter(int decimalDigits) {
		this.decimalDigits = decimalDigits;
	}

	@Override
	/**
	 * dest表示原有字符串，dstart表示替换开始位置，dend表示替换结束位置
	 * source表示正在输入即将替换进去的字符串，start表示开始位置，end表示结束位置
	 * 在将Spanned dest中范围为dstart到dend的 用CharSequence source的start到end范围的替换。
	   返回你打算放入替换位置的CharSequence。包括空字符串，或者null来表示全部替换。
	 */
	public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
		// 删除等特殊字符，直接返回
		if ("".equals(source.toString())) {
			return null;
		}
		String dValue = dest.toString();
		String[] splitArray = dValue.split("\\.");
		if (splitArray.length > 1) {
			String dotValue = splitArray[1];
			int diff = dotValue.length() + 1 - decimalDigits;
			if (diff > 0) {
				return source.subSequence(start, end - diff);
			}
		}
		return null;
	}
}
